package com.jxj.study.controller;

import com.jxj.study.util.ImageIdentify;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;

@RestController
public class OcrController {

    @GetMapping("/recognize")
    public String recognizeImageText(@RequestParam("file") MultipartFile file) throws IOException {
        // 将上传的文件保存到服务器上，以便进行OCR处理
        Path tempFile = Files.createTempFile("image_", ".png"); // 创建一个临时文件用于存储图片
        try (InputStream is = file.getInputStream(); FileOutputStream fos = new FileOutputStream(tempFile.toFile())) {
            int read;
            byte[] bytes = new byte[1024];
            while ((read = is.read(bytes)) != -1) {
                fos.write(bytes, 0, read);
            }
        } catch (IOException e) {
            e.printStackTrace(); // 异常处理
            return "Error processing file"; // 错误处理信息返回前端或日志记录等。
        } finally {
            // 删除临时文件或进行其他清理工作。实际应用中应根据需要决定是否保留临时文件。
            Files.deleteIfExists(tempFile);
        }
        // 使用OCR服务识别图片中的文本。这里用的是临时文件路径。根据需要调整。
        return ImageIdentify.recognizeFileText(tempFile.toFile()); //
    }
}